home *** CD-ROM | disk | FTP | other *** search
- /*
- File: ShimEnetHAL.c
-
- Contains: xxx put contents here xxx
-
- Version: xxx put version here xxx
-
- Copyright: © 1998-1999 by Apple Computer, Inc., all rights reserved.
-
- File Ownership:
-
- DRI: xxx put dri here xxx
-
- Other Contact: xxx put other contact here xxx
-
- Technology: xxx put technology here xxx
-
- */
-
- #include <Errors.h>
-
- #include "USBEnet.h"
- #include "USBEnetVersion.h"
- #include "ShimEnetHAL.h"
- #include "USBEnetDriver.h"
-
- /************************************************************************************/
- //
- // EnetHAL_Entry
- //
- // This is the main driver entry point.
- //
- /************************************************************************************/
-
- OSErr EnetHAL_Entry(UInt16 HdwSelector, USBEnetPtr enet, UInt32 RefCon)
- {
- #pragma unused (RefCon)
- OSErr err = noErr;
- UInt16 PFilter;
-
- switch (HdwSelector)
- {
- case EnetHAL_RegisterPorts:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - RegisterPorts");
-
- // nothing for the moment - should never get here
- enet->ioResult = err;
- break;
-
- case EnetHAL_Open:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - Open");
-
- // only do the open stuff once
- if (gGlobals->openSession == false)
- err = HAL_DoOpen(enet);
-
- break;
-
- case EnetHAL_Close:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - Close");
-
- // only do the close stuff once
- if (gGlobals->openSession == true)
- err = HAL_DoClose(enet);
-
- break;
-
- case EnetHAL_Start:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - Start");
-
- USBSetisr(enet->ioCompletion, enet->ioMisc);
- USBStartupRead();
- enet->ioResult = err;
- break;
-
- case EnetHAL_Stop:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - Stop");
-
- USBStopReadPolling();
- enet->ioResult = err;
- break;
-
- case EnetHAL_Read:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - Read");
-
- enet->ioActCount = USBReadData(enet->ioBuffer, enet->ioReqCount);
- if (enet->ioActCount == 0)
- enet->ioResult = readErr;
- break;
-
- case EnetHAL_Write:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - Write");
-
- err = USBEnetWrite(enet->ioReqCount, enet->ioBuffer);
- enet->ioResult = err;
- break;
-
- case EnetHAL_GetMACAddress:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - GetMACAddress");
-
- USBGetAddress(&enet->ioActCount, enet->ioBuffer);
- enet->ioResult = err;
- break;
-
- case EnetHAL_SetMACAddress:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - SetMACAddress");
-
- err = USBSetAddress(enet->ioReqCount, enet->ioBuffer);
- enet->ioResult = err;
- break;
-
- case EnetHAL_SetMulticastFilters:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - SetMulticastFilters");
-
- if (enet->ioBuffer)
- {
- err = USBSetMulticastFilters(enet->ioReqCount, (EnetAddressListPtr)enet->ioBuffer);
- enet->ioResult = err;
- if (err ==noErr)
- {
- PFilter = (kType_Multicast + kType_Broadcast + kType_Directed);
- err = USBSetPacketFilter(&PFilter);
- enet->ioResult = err;
- }
- } else {
- PFilter = kType_Promiscuous;
- err = USBSetPacketFilter(&PFilter);
- enet->ioResult = err;
- }
- break;
-
- case EnetHAL_Status:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - Status");
-
- err = HAL_DoStatus(enet);
- enet->ioResult = err;
- break;
-
- default:
- TraceMessage(0, kDrvName"- Entering EnetHAL_Entry - Unknown selector");
-
- err = -1; // unknown selector (for now)
- enet->ioResult = err;
- break;
- }
-
- return err;
- }
-
- /************************************************************************************/
- //
- // HAL_DoOpen
- //
- // Process an OpenDriver request to the stub drivers
- //
- /************************************************************************************/
-
- OSErr HAL_DoOpen(USBEnetPtr enet)
- {
- #pragma unused (enet)
-
- UInt16 PFilter;
-
- TraceMessage(0, kDrvName"- Entering HAL_DoOpen");
-
- // only allow one open session
-
- if (gGlobals->openSession)
- {
- enet->ioResult = openErr;
- return openErr;
- }
-
- // we now have an open session
- gGlobals->openSession = true;
-
- // set the default packet filter
- PFilter = (kType_Multicast & kType_Broadcast & kType_Directed);
- USBSetPacketFilter(&PFilter);
-
- return noErr;
- }
-
- /************************************************************************************/
- //
- // HAL_DoClose
- //
- // Process a CloseDriver request to the stub drivers
- //
- /************************************************************************************/
-
- OSErr HAL_DoClose(USBEnetPtr enet)
- {
- #pragma unused (enet)
-
- TraceMessage(0, kDrvName"- Entering HAL_DoClose");
-
- // we no longer have an open session
- gGlobals->openSession = false;
-
- enet->ioResult = noErr;
- return noErr;
- }
-
- /************************************************************************************/
- //
- // HAL_DoStatus
- //
- // Get Ethernet hardware status.
- //
- /************************************************************************************/
-
- OSErr HAL_DoStatus(USBEnetPtr enet)
- {
- #pragma unused (enet)
-
- TraceMessage(0,kDrvName"- Entering HAL_DoStatus");
-
-
- return noErr;
- }